//
//  homework.m
//  C7_结构体课后作业
//
//  Created by dllo on 15/10/14.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import "homework.h"

//    1.	（＊＊）定义一个结构体变量（包括年、月、日），计算该日在本年中为第几天？（注意考虑闰年问题），要求写一个函数days，实现上面的计算。由主函数将年月日传递给days函数，计算后将日子传递回主函数输出。

int days(Date date)
{

    int daysInMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if (0 == date.year % 400 || (0 == date.year % 4 && 0 != date.year % 100)) {
        daysInMonth[1] = 29;
    }
            int totaldays = 0;
    for (int i = 0; i < date.month - 1; i++) {
        totaldays += daysInMonth[i];
    }
    totaldays += date.day;
    return totaldays;
}

//    2. （＊＊＊）某班有5个学生，三门课。分别编写3个函数实现以下要求：
//    （1） 求各门课的平均分；

void avg(struct student stu[], int count)
{
    
    for (int i = 0; i < count; i++) {
        stu[i].average = (stu[i].englishScore + stu[i].languageScore + stu[i].mathScore) / 3;
        printf("%s的平均分是:%.2f\n", stu[i].name, stu[i].average);
    }
    
}



//    （2） 找出有两门以上不及格的学生，并输出其学号和不及格课程的成绩；

void poor(struct student stu[],int count)
{

    for (int i = 0; i < count; i++) {
        if ((stu[i].englishScore < 60 && stu[i].languageScore < 60) || (stu[i].englishScore < 60 && stu[i].mathScore < 60) || (stu[i].languageScore < 60 && stu[i].mathScore < 60)) {
            printf("%s %d", stu[i].name, stu[i].number);
        }
    }

}



//    （3） 找出三门课平均成绩在85-90分的学生，并输出其学号和姓名


void excellent(struct student stu[], int count)
{
    for (int i = 0; i < count; i++) {
        if (80 <= stu[i].average && stu[i].average <= 90) {
            printf("%d %s", stu[i].number, stu[i].name);
        }
    }

}

//    3. （＊＊＊）模拟n个人参加选举的过程，并输出选举结果：假设候选人有四人，分别用A、B、C、D表示，当选某候选人时直接输入其编号(编号由计算机随机产生)，若输入的不是A、B、C、D则视为无效票，选举结束后按得票数从高到低输出候选人编号和所得票数。

void cast (struct select tick[],int n, int ticket[])
{

    for (int i = 0; i < n ; i++) {
        switch (ticket[i]) {
            case 65:
                tick[0].count++;
                continue;
            case 66:
                tick[1].count++;
                continue;
            case 67:
                tick[2].count++;
                continue;
            case 68:
                tick[3].count++;
                continue;
                
            default:
                break;
        }
    }
    for (int i = 0; i < 4 - 1; i++) {
        for (int j = 0; j < 4 - i - 1; j++) {
            if (tick[i].count > tick[i + 1].count) {
                struct select temp = tick[i];
                tick[i] = tick[i + 1];
                tick[i + 1] = temp;
            }
        }
    }
    for (int i = 0; i < 4; i++) {
        printf("%d %c\n", tick[i].count, tick[i].letter);
    }

}

//    4．（***）创建一个Point结构体，包含x，y两个变量。
//    并写以下函数：
//    函数1，判断两个点是否在一条水平线上。

void horizontal(MyPoint a, MyPoint b)
{

    if (a.y == b.y) {
        printf("在一条水平线上");
    }else{
        printf("不在一条水平线上");
    }

}


//    函数2，判断两个点是否在一条垂直线上。
void vertical(MyPoint a, MyPoint b)
{

    if (a.x == b.x) {
        printf("在一条垂直线上");
    } else {
        printf("不在一条垂直线上");
    }
}

//    函数3，判断两个点是否相等。

void equal(MyPoint a, MyPoint b)
{

    if (a.y == b.y && a.x == b.x) {
        printf("相等");
    } else {
        printf("不相等");
    }

}

//    5．（***）创建一个Size结构体，包含width，height两个变量。
//    并写以下函数：
//    函数1，判断两个size是否等宽。

void equalW(MySize a, MySize b)
{

    if (a.width == b.width) {
        printf("等宽");
    }

}


//    函数2，判断两个size是否在等高。
//    函数3，判断两个size是否相等。



